package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.Publish;
import com.tanhua.domain.vo.PageResult;

import java.util.List;

/**
 * @author liuyp
 * @date 2021/01/30
 */
public interface PublishApi {
    /**
     * 分页查询给某一用户推荐的动态列表
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return 给userId推荐的动态结果
     */
    PageResult<Publish> findRecommendPublishList(long userId, int page, int pagesize);

    /**
     * 发布动态（保存动态）
     * @param publish
     * @return 动态的id
     */
    String savePublish(Publish publish);

    /**
     * 分页查询某一用户的时间线动态（某一用户的好友动态列表）
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return userId的好友动态列表
     */
    PageResult<Publish> findTimelinePublishList(long userId, int page, int pagesize);

    /**
     * 分页查询某一用户的相册表动态（自己的动态列表）
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return userId自己的动态列表
     */
    PageResult<Publish> findAlbumPublishList(long userId, int page, int pagesize);

    /**
     * 查询一条动态
     * @param publishId 动态的id
     * @return publishId对应的动态
     */
    Publish findById(String publishId);

    /**
     * 分页查询某一用户发布的动态列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param uid 用户id
     * @param state 动态的审核状态
     * @return 分页查询结果
     */
    PageResult<Publish> findPublishListByState(int page, int pagesize, Long uid, Integer state);

    /**
     * 更新审核状态
     * @param publish
     */
    void updateState(Publish publish);

    /**
     * s根据pid的集合，查询对应的动态集合
     * @param pidList pid集合
     * @return 对应的动态集合
     */
    List<Publish> findPublishByPids(List<Long> pidList);

    void updateStates(String publishId, int state);
}
